home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / var / lib / python-support / python2.6 / xdg / Locale.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-04-20  |  2.1 KB  |  93 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. '''
  5. Helper Module for Locale settings
  6.  
  7. This module is based on a ROX module (LGPL):
  8.  
  9. http://cvs.sourceforge.net/viewcvs.py/rox/ROX-Lib2/python/rox/i18n.py?rev=1.3&view=log
  10. '''
  11. import os
  12. from locale import normalize
  13. regex = '(\\[([a-zA-Z]+)(_[a-zA-Z]+)?(\\.[a-zA-Z\\-0-9]+)?(@[a-zA-Z]+)?\\])?'
  14.  
  15. def _expand_lang(locale):
  16.     locale = normalize(locale)
  17.     COMPONENT_CODESET = 1
  18.     COMPONENT_MODIFIER = 2
  19.     COMPONENT_TERRITORY = 4
  20.     mask = 0
  21.     pos = locale.find('@')
  22.     if pos >= 0:
  23.         modifier = locale[pos:]
  24.         locale = locale[:pos]
  25.         mask |= COMPONENT_MODIFIER
  26.     else:
  27.         modifier = ''
  28.     pos = locale.find('.')
  29.     codeset = ''
  30.     if pos >= 0:
  31.         locale = locale[:pos]
  32.     
  33.     pos = locale.find('_')
  34.     if pos >= 0:
  35.         territory = locale[pos:]
  36.         locale = locale[:pos]
  37.         mask |= COMPONENT_TERRITORY
  38.     else:
  39.         territory = ''
  40.     language = locale
  41.     ret = []
  42.     for i in range(mask + 1):
  43.         if not i & ~mask:
  44.             val = language
  45.             if i & COMPONENT_TERRITORY:
  46.                 val += territory
  47.             
  48.             if i & COMPONENT_CODESET:
  49.                 val += codeset
  50.             
  51.             if i & COMPONENT_MODIFIER:
  52.                 val += modifier
  53.             
  54.             ret.append(val)
  55.             continue
  56.     
  57.     ret.reverse()
  58.     return ret
  59.  
  60.  
  61. def expand_languages(languages = None):
  62.     if languages is None:
  63.         languages = []
  64.         for envar in ('LANGUAGE', 'LC_ALL', 'LC_MESSAGES', 'LANG'):
  65.             val = os.environ.get(envar)
  66.             if val:
  67.                 languages = val.split(':')
  68.                 break
  69.                 continue
  70.         
  71.     
  72.     nelangs = []
  73.     for lang in languages:
  74.         for nelang in _expand_lang(lang):
  75.             if nelang not in nelangs:
  76.                 nelangs.append(nelang)
  77.                 continue
  78.         
  79.     
  80.     return nelangs
  81.  
  82.  
  83. def update(language = None):
  84.     global langs, langs
  85.     if language:
  86.         langs = expand_languages([
  87.             language])
  88.     else:
  89.         langs = expand_languages()
  90.  
  91. langs = []
  92. update()
  93.